package br.com.srv.componentes.rota.service;

import java.util.List;
import java.util.Set;

import HTTPClient.HTTPConnection;
import br.com.srv.commons.service.BasicService;
import br.com.srv.model.HoraContratadaTO;
import br.com.srv.model.PontoTO;
import br.com.srv.model.RotaTO;
import br.com.srv.model.VeiculoTO;

public interface RotaService extends BasicService {
	
	public static final String SERVICE_NAME = "rotaService";

	void salvar(RotaTO rotaTO) throws Exception;
	
	void salvarHorarioContratado(HoraContratadaTO horaContratadaTO) throws Exception;

	List<RotaTO> buscarRotas(RotaTO rotaTO) throws Exception;

	void removerRota(String cercaId) throws Exception;

	RotaTO buscarRotaById(String rotaId);

	List<RotaTO> buscarRotasAtivas(RotaTO rotaTO) throws Exception;

	void salvarVeiculosNaRota(RotaTO rotaTO) throws Exception;

	List<VeiculoTO> buscarVeiculosDaRota(Integer id) throws Exception;

	List<VeiculoTO> buscarVeiculosNaoDaRota(List<VeiculoTO> veiculos, List<VeiculoTO> veiculosDaRota);
	
	/**
	 * Retorna um SET de veiculos com as coordenadas atuais.
	 * @param rotaTO RotaTO
	 * @param connection Connection
	 * @return SET de Ve�culos com as coordenadas atualizadas.
	 * @throws Exception Caso ocorra algum erro.
	 */
	public Set<VeiculoTO> buscarVeiculosDaRotaComCoordenadas(RotaTO rotaTO) throws Exception;
	
	void salvarDadosPonto(PontoTO pontoTO) throws Exception;
	
	void salvarHoraContratada(HoraContratadaTO horaContratadaTO) throws Exception;
	
	void removerHoraContratada(HoraContratadaTO horaContratadaTO) throws Exception;
	
	List<PontoTO> carregarPontosIniciais(String id) throws Exception;
	
	List<PontoTO> carregarPontosFinais(String idRota, String idPontoInicial) throws Exception;

}
